package com.sgc.view;

import java.io.IOException;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.archtecture.control.exceptions.NegocioException;
import com.archtecture.control.facedes.PersistenceFacadeLocal;
import com.sgv.model.persistence.UsuarioFacadeLocal;
import com.sgv.model.servico.ImportacaoProdutosService;

@ManagedBean
@SessionScoped
public class SessaoMB {

	@EJB
	private UsuarioFacadeLocal usuarioFacade;

	@EJB
	private PersistenceFacadeLocal facadeLocal;

	public void logout() throws IOException {
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		try {
			request.logout();
			HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
			response.sendRedirect("/");
		}
		catch (ServletException e) {
		}

	}

	public String getNomeUsuario() {
		try {
			return usuarioFacade.obterUsuarioLogado().getNome();
		}
		catch (NegocioException e) {
			e.printStackTrace();
		}
		return null;
	}

	public boolean isPermissaoManutencaoCaixa() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoManutencaoCategoria() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoManutencaoCompra() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoManutencaoFornecedor() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoManutencaoProduto() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoAtendimentoCaixa() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoAtendimentoVenda() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR", "GERENTE", "VENDEDOR");
	}

	public boolean isPermissaoImportacaoProdutos() {
		return usuarioFacade.verificarPermissao("ADMINISTRADOR");
	}

	public void importarProduto() {
		new ImportacaoProdutosService().importarProdutos(facadeLocal);
	}

}
